package EnumBoost;

import java.util.HashMap;

/**
 * Created by huxin on 2017/2/20.
 * 针对Enum的增强
 * 使用方式：Model("asdas"), Model1
 * 使用的是枚举名来设置默认构造值并，存入有序映射集中。
 * 不覆盖toString方法。
 * 通过getValue方法可以得到设置的值。
 * 通过toString方法可以得到枚举的定义名。
 */
public enum  StringEnumBoost {
    ;

    private static class MapValue {
        public static HashMap<String, StringEnumBoost> map = new HashMap<>();
    }

    private String Value;

    StringEnumBoost(String string) {
        StringEnumBoost strEnumBoost = StringEnumBoost.MapValue.map.get(string);
        if (strEnumBoost != null) {
            try {
                throw new Exception("StringEnumBoost Exist Index: " + strEnumBoost + " legNo: " + strEnumBoost.toString()
                        + ". Error: This legNO: " + this.toString() + " Index: " + string);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else {
            this.Value = string;
            StringEnumBoost.MapValue.map.put(this.Value, this);
        }
    }

    StringEnumBoost() {
        Value = this.toString();
        StringEnumBoost.MapValue.map.put(this.Value, this);
    }

    public String getValue() {
        return Value;
    }
}
